<?php
/*
Description: This plgin allow to create new post type incasso
Version: 1.0
Author: Carmine Ricco - Luca De Cristofano
Author URI: #
License: GPL2
*/

$pluginDir = basename(dirname(__FILE__));
$pluginPath	= WP_PLUGIN_DIR . '/' . $pluginDir;

require_once($pluginPath . "/wp-formazione_includes.php");

wpf_incasso_hooks();

// fissa gli hook
function wpf_incasso_hooks()
{
	// creo il plugin ed i relativi menu
	register_activation_hook(__FILE__, 'wpf_incasso_rewrite_flush'); // serve per i permalink
	add_action('init', 'wpf_incasso_init'); // quando inizializzo la pagina
	add_action('admin_init', 'wpf_incasso_add_boxes', 1); // solo per compatibilità
// 	add_action('contextual_help', 'wpf_incasso_help_text', 10, 3); // genero l'help contestuale ai post, in amministrazione

	// modifico la visualizzazione dei custom-post
// 	add_filter('the_content', 'wpf_incasso_view'); // quando visualizzo il testo
// 	add_filter('the_title','wpf_progetto_title'); // quando visualizzo il titolo


	// salvo i dati dei vari box creati
	add_action('save_post', 'wpf_incasso_generale_save', 10, 2);
}





// inizializza quello che serve
function wpf_incasso_init()
{
	// creazione del posttype
	//@ATTENTION modificare le varie descrizioni
	$labels = array(
		'name' => _x('Incassi', 'Incassi'),
		'singular_name' => _x('Incasso', 'Nome singolare degli incassi'),
		'add_new' => _x('Aggiungi nuovo', 'wp-formazione'),
		'add_new_item' => __('Nuovo incasso'),
		'edit_item' => __('Modifica incasso'),
		'new_item' => __('Nuovo incasso'),
		'all_items' => __('Tutti gli incassi'),
		'view_item' => __('Visualizza questo incasso'),
		'search_items' => __('Cerca un incasso'),
		'not_found' => __('Nessun incasso trovato'),
		'not_found_in_trash' => __('Non ci sono incassi nel cestino'),
		'parent_item_colon' => '',
		'menu_name' => 'Incassi'
	);

	$args = array(
		'labels' => $labels,
		'public' => true,
		'publicly_queryable' => true,
		'show_ui' => true,
		'show_in_menu' => 'edit.php?post_type=wpf_fattura_emessa',
		'query_var' => true,
		'rewrite' => array(
			'slug' => 'incasso'
		),
		'capability_type' => array(
			'incasso', 'incassi'
		),
		'map_meta_cap' => true,
		'has_archive' => true,
		'hierarchical' => true,
		'menu_position' => null,
		'supports' => array(
			'title'
		)
	);

	register_post_type('wpf_incasso', $args);
}

// aggiunge alla incasso i suoi customtype
function wpf_incasso_extends($post) {
	// solo in caso di incasso
	if ($post->post_type != 'wpf_incasso')
	{
		return;
	}

	$post->utente = get_post_meta($post->ID, 'utente',true);
	$post->data_incasso = get_post_meta($post->ID, 'data_incasso', true);
	$post->modalita = get_post_meta($post->ID, 'modalita', true);
	$post->key = get_post_meta($post->ID, 'key', true);
	$post->invito = get_post_meta($post->ID, 'invito', true);
}

// serve per gestire i permalink
function wpf_incasso_rewrite_flush()
{
	wpf_incasso_init();
	flush_rewrite_rules();
}

// aggiunge i boxes necessari a
function wpf_incasso_add_boxes()
{

	global $post;

	// Use nonce for verification
	wp_nonce_field(plugin_basename(__FILE__), 'wpf_incasso_noncename');

	//$readonly = (!current_user_can('approve_incassi')) && ($post->post_status != 'published');
	$readonly = false;
	
	$form_fields = array(
			'utente' => array(
            		'type' => 'smalltext',
                	'description' => __('Utente', WPF_DOMAIN ),
                	'howto' => __('Inserisci qui l\'utente da iscrivere', WPF_DOMAIN )
            ),
        	'data_incasso' => array(
            	    'type' => 'date',
                	'description' => __('Data di incasso', WPF_DOMAIN ),
                	'howto' => __('Inserisci qui la data di incasso.', WPF_DOMAIN )
            ),
	        'modalita' => array(
                	'type' => 'longtext',
                	'description' => __('Modalità di incasso', WPF_DOMAIN ),
                	'howto' => __('Inserisci qui la modalità di incasso', WPF_DOMAIN )
            ),
	        'key' => array(
    	            'type' => ($readonly ? 'readonly' : 'smalltext'),
        	        'description' => __('Chiave per corso a pagamento', WPF_DOMAIN ),
            	    'howto' => __('Inserisci qui la chiave per il corso a pagamento', WPF_DOMAIN )
            ),
	        'invito' => array(
    	            'type' => ($readonly ? 'readonly' : 'smalltext'),
        	        'description' => __('Invito', WPF_DOMAIN ),
            	    'howto' => __('Inserisci qui l\'invito', WPF_DOMAIN )
            ),
            'documento' => array(
					'type' => 'file',
                	'description' => __("Documento", WPF_DOMAIN ), 
                	'howto' => __("Carica qui la scansione del documento-fattura (max 5MB)", WPF_DOMAIN )
			)
    );

    register_post_box('wpf_incasso', 'generale_incasso', 'Incasso', 'normal', 'core', $form_fields);
    
    register_post_parentbox('wpf_incasso', 'Fattura',wpf_get_query('fatture_emesse'),__("Fattura relativa all'incasso", WPF_DOMAIN ));
        
}

// cattura e salva i dati del box generale
function wpf_incasso_generale_save($post_id, $post)
{

	// If it is our form has not been submitted, so we dont want to do anything
	if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
	{
		return;
	}

	// verify this came from the our screen and with proper authorization,
	// because save_post can be triggered at other times
	/*if (!wp_verify_nonce(@$_POST['wpf_incasso_noncename'], plugin_basename(__FILE__)))
	{
		return;
	}*/

	if (!current_user_can('edit_incassi'))
	{
		return;
	}
        
        if ($post->post_type != 'wpf_incassi')
	{
		return;
	}

	if ($post->post_status == 'publish')
	{
		return;
	}

	if ($post->post_status == 'closed')
	{
		return;
	}

	// OK, you can save the data
	$my_post = array();
	$my_post['ID'] = $post_id;
	$my_post['post_title'] = $post->nome_incasso;
	$my_post['post_content'] = $post->note;
	$my_post['post_excerpt'] = $post->descrizione;

	remove_action('save_post', 'wpf_incasso_generale_save');
	wp_update_post($my_post);
	add_action('save_post', 'wpf_incasso_generale_save');

	admin_field_save_post_meta($post_id,'numero_incasso',$post->numero_incasso);
	admin_field_save_post_meta($post_id,'bando_riferimento',$post->bando_riferimento);
	admin_field_save_post_meta($post_id,'estremi_bando',$post->estremi_bando);
	admin_field_save_post_meta($post_id,'data_scadenza',$post->data_scadenza);
}
?>
